package 简单.位运算;

/**
 * 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
 * <p>
 * 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/hamming-distance/
 */
public class 汉明距离_461 {

    public static void main(String[] args) {

        // 1 1
        // 0 1
        System.out.println(hammingDistance(3, 1));

    }

    /**
     * 遍历获取 x 和 y 对应 bit位的值
     *
     * @param x
     * @param y
     * @return
     */
    public static int hammingDistance(int x, int y) {
        int ans = 0;
        for (int i = 0; i < 32; i++) {
            int curXBit = 0, curYBit = 0;
            if (((x >> i) & 1) == 1) {
                curXBit = 1;
            }
            if (((y >> i) & 1) == 1) {
                curYBit = 1;
            }
            if (curXBit != curYBit) ans++;
        }
        return ans;
    }

}
